package cn.gzj.springbootvalidation.pojo;

import lombok.Data;

import java.io.Serializable;

/**
 * 统一返回对象
 */

@Data
public class Result<T> implements Serializable {
    /**
     * 通信数据
     */
    private T data;
    /**
     * 通信状态
     */
    private boolean flag = true;
    /**
     * 通信描述
     */
    private String msg = "操作成功！666" ;

    /**
     * 通过静态方法获取实例
     * Result是泛型（啥类型都可以，方便以后的书写）
     */
    public static <T> Result<T> of(T data) {
        return new Result<>(data);
    }

//    public static <T> Result<T> of(T data, boolean flag) {
//        return new Result<>(data, flag);
//    }
    //因有默认值flag与msg，所有返回的时候返回此函数，若不设置默认值的话，默认null和false
    public static <T> Result<T> of(T data, boolean flag, String msg) {
        return new Result<>(data, flag, msg);
    }

    @Deprecated
    public Result() {

    }
    //在controller中使用了
    private Result(T data) {
        this.data = data;
    }
//    可有可无，没使用
//    private Result(T data, boolean flag) {
//        this.data = data;
//        this.flag = flag;
//    }
    //校检的时候使用了，返回的失败的默认值
    private Result(T data, boolean flag, String msg) {
        this.data = data;
        this.flag = flag;
        this.msg = msg;
    }
}
